gerrit部署使用 |
您所在的位置:网站首页 › ngnix 配置代理 › gerrit部署使用 |
前言
gerrit是基于git的工具,code review功能是开发中很方便,此外它可以配合Jenkins进行自动化的编译工作。今天给大家分享一下gerrit在ubuntu的安装使用 作者:良知犹存 转载授权以及围观:欢迎关注微信公众号:羽林君 或者添加作者个人微信:become_me Gerrit简介Gerrit 是建立在Git版本控制系统之上并且基于Web的一个免费开源的轻量级代码审查工具。 作为开发者和Git之间的一层屏障,不允许直接将本地修改内容同步到远程仓库中。 与Jenkins集成后,可以在每次提交代码后,人工审核代码前,通过Jenkins任务自动运行单元测试、构建以及自动化测试,如果Jenkins任务失败,会自动打回本次提交。 一般Git、Gerrit和Jenkins集成后的使用流程 1.开发者提交代码到Gerrit 2.触发对应的Jenkins任务,通过以后Verified加1 3.人工审核,审核通过后code review加2,触发对应的Jenkins任务 4.通过以后确认本次提交,Gerrit执行与Git仓库的代码同步操作 5.代码进入Git仓库![]() 安装需要内容,gerrit文件,环境有git、jdk环境、反向代理工具nginx(帮助登录网页) 本文在nginx安装部分是最后解决问题时候,才发现反向代理工具的是必须的,最后才安装。 先下载 gerrit文件下载链接:https://www.gerritcodereview.com/#download,官网可达 官网安装指导文档: https://gerrit-review.googlesource.com/Documentation/index.html https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.2/install.html 下载下来等待其他环境安装好之后进行使用。 jdk环境直接apt install进行安装sudo apt install openjdk-11-jdk 安装之后使用java -version命令查看是否安装成功 gerrit需要git环境,直接安装git sudo apt-get install git ![]() 进入到gerrit*.war文件所在目录,执行以下命令进行交互式安装 java -jar ~/Downloads/gerrit*.war init -d ~/Gerrit/
类似于如此操作就可以创建一个gerrit目录 最后我选择了本地目录建立 Gerrit ,操作执行 java -jar gerrit*.war init -d ~/Gerrit/ 注意: 1、gerrit可以将数据保存到mysql或其他的数据中,如果你需要使用mysql,则需要安装gerrit之前安装mysql,我这里直接使用默认的数据库类型 H2。如果你需要使用其他类型数据库,可以参考下面这个链接: https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.2/install.html2、如果gerrit需要结合jenkins做CI持续构建的话,在交互式安装过程中需要安装Verified label,默认是不安装的:Install Verified label [y/N]? y 这里选择y,安装Verified label。 启动执行具体细节如下:(比较复杂,后期使用需要反复观看里面配置以及解释) lyn@lyn:~/Downloads$ java -jar gerrit*.war init -d ~/Gerrit/Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore[2023-03-11 21:25:46,286] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/lyn/Gerrit/etc/gerrit.config; assuming defaults*** Gerrit Code Review 3.7.0*** Create '/home/lyn/Gerrit' [Y/n]? y *** Git Repositories*** Location of Git repositories [git]: git #指定Git存储库,最好指定一个不存在的目录,他会自动创建 *** JGit Configuration*** Auto-configured "receive.autogc = false" to disable auto-gc after git-receive-pack. *** Index*** Type [lucene]: #默认即可。 *** User Authentication*** Authentication method [openid/?]: HTTP #认证方法输入HTTP,我们要使用反向代理Get username from custom HTTP header [y/N]?SSO logout URL :Enable signed push support [y/N]?Use case insensitive usernames [Y/n]? *** Review Labels*** Install Verified label [y/N]? y *** Email Delivery*** SMTP server hostname [localhost]: #输入自动发送邮件的smtp服务器SMTP server port [(default)]: #465/994时SSL协议端口后,25是非SSL协议端口号SMTP encryption [none/?]: #如果上一步输入的是465/994,此处输入SSL,否则直接回车即可SMTP username : #此处是你定义自动发送邮件的邮箱地址 #接着我们需要输入2次咱们邮箱的授权码,而非邮箱密码! *** Container Process*** Run as [lyn]: gerritJava runtime [/usr/lib/jvm/java-11-openjdk-amd64]:Copy gerrit-3.7.0.war to /home/lyn/Gerrit/bin/gerrit.war [Y/n]?Copying gerrit-3.7.0.war to /home/lyn/Gerrit/bin/gerrit.war *** SSH Daemon*** Listen on address [*]: #指定SSH后台服务的监听地址Listen on port [29418]: #指定SSH后台服务的端口号Generating SSH host key ... rsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done *** HTTP Daemon***Behind reverse proxy [Y/n]? y #使用发向代理Proxy uses SSL (https://) [Y/n]? #不适用SSLSubdirectory on proxy server [/]: #指定代理服务器的子目录,默认为"/"路径,默认即可Listen on address [*]: #只当gerrit服务的监听地址Listen on port [8080]: 8088 #指定gerrit的服务端口 Canonical URL [http://lyn:8080/]: http://lyn:8088 #指定标准连接 *** Cache*** *** Plugins*** Installing plugins. #接下来就是询问我们是否安装插件,我们一路”y“ 即可~Install plugin codemirror-editor version v3.7.0 [y/N]? yInstalled codemirror-editor v3.7.0Install plugin commit-message-length-validator version v3.7.0 [y/N]? yInstalled commit-message-length-validator v3.7.0Install plugin delete-project version v3.7.0 [y/N]? yInstalled delete-project v3.7.0Install plugin download-commands version v3.7.0 [y/N]? yInstalled download-commands v3.7.0Install plugin gitiles version v3.7.0 [y/N]? yInstalled gitiles v3.7.0Install plugin hooks version v3.7.0 [y/N]? yInstalled hooks v3.7.0Install plugin plugin-manager version v3.7.0 [y/N]? yInstalled plugin-manager v3.7.0Install plugin replication version v3.7.0 [y/N]? yInstalled replication v3.7.0Install plugin reviewnotes version v3.7.0 [y/N]? yInstalled reviewnotes v3.7.0Install plugin singleusergroup version v3.7.0 [y/N]? yInstalled singleusergroup v3.7.0Install plugin webhooks version v3.7.0 [y/N]? yInstalled webhooks v3.7.0Initializing plugins. ============================================================================Welcome to the Gerrit community Find more information on the homepage: https://www.gerritcodereview.comDiscuss Gerrit on the mailing list: https://groups.google.com/g/repo-discuss============================================================================Initialized /home/lyn/GerritInit complete, reindexing accounts,changes,groups,projects with: reindex --site-path /home/lyn/Gerrit --threads 1 --index accounts --index changes --index groups --index projects --disable-cache-statsReindexed 0 documents in accounts index in 0.0s (0.0/s)Index accounts in version 12 is readyReindexing groups: 100% (2/2)Reindexed 2 documents in groups index in 0.8s (2.5/s)Index groups in version 9 is readyReindexing changes: Slicing projects: 100% (2/2), doneReindexed 0 documents in changes index in 0.0s (0.0/s)Index changes in version 79 is readyReindexing projects: 100% (2/2)Reindexed 2 documents in projects index in 0.1s (14.6/s)Index projects in version 5 is readyExecuting /home/lyn/Gerrit/bin/gerrit.sh startStarting Gerrit Code Review: WARNING: Could not adjust Gerrit's process for the kernel's out-of-memory killer. This may be caused by /home/lyn/Gerrit/bin/gerrit.sh not being run as root. Consider changing the OOM score adjustment manually for Gerrit's PID=193375 with e.g.: echo '-1000' | sudo tee /proc/193375/oom_score_adjOK 创建gerrit.password文件,并创建用户 htpasswd -c /home/lyn/Gerrit/etc/gerrit.password admin # 创建第一个用户admin,同时会生成一个gerrit.password文件 htpasswd -m /home/lyn/Gerrit/etc/gerrit.password lyn # 在gerrit.password增加用户用 -m执行上面的命令,会要求多次输入密码,改密码就是对应用户的登录密码。 在之前安装gerrit的目录下执行脚本,启动gerrit # 启动gerrit$ ~/Gerrit/bin/gerrit.sh start# 停止gerrit$ ~/Gerrit/bin/gerrit.sh stop# 重启gerrit$ ~/Gerrit/bin/gerrit.sh restart
这个时候我没有开启反向代理,会提示如下问题: ![]() If the HTTP server is Apache HTTPd, check the proxy configuration includes an authorization directive with the proper location, ensuring it ends with ‘/’: 后面还遇到了反向代理设置后,502,403问题。 gerrit相关配置文件修改,gerrit目录的gerrit.config和nginx的gerrit.conf修改解决。 原因是Gerrit有两种工作方式,我们要采用 http 的工作方式,也就是代码审核人员,可以直接通过Web页面对提交的代码进行评审以及后续的操作。 然后Gerrit要求不能直接请求其端口,必须要使用反向代理才能正确登录。而我们知道Nginx的成功正在于其高效、轻量级以及 反向代理 ,虽然Apache也有反向代理的功能,但是如果你在安装Apache时没有开启,后续的开启过程要相对复杂一点,而Nginx就简单的多了。 https://blog.csdn.net/zhoulr000/article/details/114173876 方法一:安装ngnix sudo apt-get install nginx 设置nginx的gerrit反向代理文件 sudo vi /etc/nginx/conf.d/gerrit.conf 配置nginx反向代理,文件内容如下 server { listen 81; server_name localhost; allow all; deny all;auth_basic "Welcome to Gerrit Code Review Site!"; auth_basic_user_file /home/lyn/Gerrit/etc/gerrit.password; location / { proxy_pass http://127.0.0.1:8088; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; }} 需要注意的部分: listen 81: nginx server 监听的端口,尽量不要使用知名端口80,我这里面换成了81端口 /home/lyn/Gerrit/etc/gerrit.password: 这个是http认证使用的文件,后面需要配置 对应 gerrit 端口配置为8088其中还修改了gerrit中etc目录的gerrit.config文件,内容如下: [gerrit] basePath = git canonicalWebUrl = http://lyn:8088/ serverId = f0858671-052c-4ea0-9883-032a598c9aae[container] javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance" javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance" user = lyn javaHome = /usr/lib/jvm/java-11-openjdk-amd64[index] type = lucene[auth] type = HTTP[receive] enableSignedPush = false[sendemail] smtpServer = localhost[sshd] listenAddress = *:29418[httpd] listenUrl = proxy-https://*:8088/[cache] directory = cache配置完成后重启gerrit~/Gerrit/bin/gerrit.sh restart 配置完成后重启ngnix服务 sudo /etc/init.d/nginx restart # 重启nginxsudo /etc/init.d/nginx status # 查看状态或者执行systemctl restart nginx.servicesystemctl status nginx.service启动之后可以使用工具查看一下自己配置的端口有没有正常工作: sudo netstat -ltpn 方法二:安装apache2 我们也可以让Apache2作为反向代理服务器访问Gerrit, 这个没有验证,所以没有过多描述,大家也可以参考此文:https://www.jianshu.com/p/0808559e6e2b 进行apache2配置 ![]() 输入下面链接,就可以登录到gerrit页面。 http://192.168.33.128:81/ 192.168.33.128:是主机地址 81: 是nginx监听的地址,不是gerrit配置的8088(这就是反向代理的作用)。输入刚才htpasswd设置好的用户名和密码登录: ![]() gerrit 使用过程中,当进行 commit时,必须要生成一个 Change-Id,否则,push到gerrit服务器时,会收到一个错误提醒,而生成Change-Id可以用hooks工具。hooks钩子工具中commit-msg hook可以帮我们生成Change-Id,就是运行gerrit使用安装的插件
这样修改就可以看到插件的指导网页了 这就是我在gerrit部署基本操作的使用分享。如果大家有更好的想法,也欢迎大家加我好友交流分享哈。 作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。 ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧推荐阅读 【1】jetson nano开发使用的基础详细分享 【2】Linux开发coredump文件分析实战分享 【3】CPU中的程序是怎么运行起来的 必读 【4】cartographer环境建立以及建图测试 【5】设计模式之简单工厂模式、工厂模式、抽象工厂模式的对比 本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |